package entidades;

import logica.Direcao;
import logica.Posicao;

public class Demolidor implements Posicionavel {

	private int passos, giros = 0;
	private Direcao direcao;
	private Posicao posicao;
	private int vitalidade;
	private boolean vivo;

	public Direcao getDirecao() {
		return direcao;
	}

	public void setDirecao(Direcao direcao) {
		this.direcao = direcao;
	}

	public int getPassos() {
		return passos;
	}

	public void setPassos(int passos) {
		this.passos = passos;
	}

	public int getGiros() {
		return giros;
	}

	public void setGiros(int giros) {
		this.giros = giros;
	}

	public Demolidor(){
		vivo = true;
	}

	@Override
	public Posicao getPosicao() {
		return posicao;
	}

	@Override
	public void setPosicao(Posicao posicao) {
		this.posicao = posicao;
	}

	public void mover(Ambiente ambiente, Direcao direcao) {
		switch (direcao) {
		case NORTE:
			if (posicao.getX() - 1 >= 0)
				posicao.setX(posicao.getX() - 1);
			break;
		case SUL:
			if (posicao.getX() + 1 < ambiente.ALTURA)
				posicao.setX(posicao.getX() + 1);
			break;
		case LESTE:
			if (posicao.getY() + 1 < ambiente.LARGURA)
				posicao.setY(posicao.getY() + 1);
			break;
		case OESTE:
			if (posicao.getY() - 1 >= 0)
				posicao.setY(posicao.getY() - 1);
			break;
		default:
			break;
		}
	}

	public int getVitalidade() {
		return vitalidade;
	}

	public void setVitalidade(int vitalidade) {
		this.vitalidade = vitalidade;
		if (vitalidade <= 0)
			setVivo(false);
		else setVivo(true);
	}

	public boolean isVivo() {
		return vivo;
	}

	public void setVivo(boolean vivo) {
		this.vivo = vivo;
	}
}
